/**
	* Copyright (c) minuteproject, minuteproject@gmail.com
	* All rights reserved.
	* 
	* Licensed under the Apache License, Version 2.0 (the "License")
	* you may not use this file except in compliance with the License.
	* You may obtain a copy of the License at
	* 
	* http://www.apache.org/licenses/LICENSE-2.0
	* 
	* Unless required by applicable law or agreed to in writing, software
	* distributed under the License is distributed on an "AS IS" BASIS,
	* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	* See the License for the specific language governing permissions and
	* limitations under the License.
	* 
	* More information on minuteproject:
	* twitter @minuteproject
	* wiki http://minuteproject.wikispaces.com 
	* blog http://minuteproject.blogspot.net
	* 
*/
/**
	* template reference : 
	* - name : OpenxavaDomainObjectUML
	* - file name : DomainObjectUMLJPAAnnotationOXAnnotationV4.vm
*/
package sistema_oficial.sistema_oficial.domain.sistemaoficial;

//MP-MANAGED-ADDED-AREA-BEGINNING @import@
//MP-MANAGED-ADDED-AREA-ENDING @import@
import java.sql.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;

import javax.persistence.*;
import org.openxava.annotations.*;

import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleOrdenEntrada;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel0Normal;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel1Normal;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel3Externo;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel4Externo;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.FacturaCompra;

/**
 *
 * <p>Title: OrdenEntrada</p>
 *
 * <p>Description: Domain Object describing a OrdenEntrada entity</p>
 *
 */
@Entity (name="OrdenEntrada")
@Table (name="orden_entrada")
@Views({
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-base-orden_entrada@
	@View(
		name="base",
		members=
        "" 	
        + "identificador  ; "
        + "correlativo  ; "
        + "hora  ; "
        + "facturaCompraIdentificador  ; "
		),
//MP-MANAGED-UPDATABLE-ENDING
	@View(
		name="Create", 
		extendsView="base"
	),
	@View(
		name="Update", 
		extendsView="base",
        members=
          "" 	
	    + "detalleOrdenEntrada { detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador };" 
	    + "entraNivel0Normal { entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador };" 
	    + "entraNivel1Normal { entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador };" 
	    + "entraNivel3Externo { entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador };" 
	    + "entraNivel4Externo { entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador };" 
	),
	@View(extendsView="base",
        members=
          "" 	
	    ),
    @View(name="ordenEntradaDEFAULT_VIEW", 
	   members=
          " identificador ;" 	
        + "correlativo  ; "
        + "hora  ; "
	),
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-reference-orden_entrada@
    @View(name="reference", 
       extendsView="ordenEntradaDEFAULT_VIEW"
//MP-MANAGED-UPDATABLE-ENDING
    )
})

@Tabs({
@Tab(
properties=
     " correlativo "
    +",  hora "
)
,
@Tab(
name = "OrdenEntradaTab",
properties=
     " correlativo "
    +",  hora "
)
,
@Tab(
name = "OrdenEntradaTabWithRef",
properties=
     " correlativo "
    +",  hora "
)
})
//MP-MANAGED-ADDED-AREA-BEGINNING @class-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @class-annotation@
public class OrdenEntrada {

    @Hidden @Id @Column(name="identificador" )
    private Integer identificador; 

//MP-MANAGED-ADDED-AREA-BEGINNING @correlativo-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @correlativo-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-correlativo@
    @Column(name="correlativo",  length=50, nullable=false,  unique=false)
    @Required
    private String correlativo;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @hora-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @hora-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-hora@
    @Column(name="hora",   nullable=false,  unique=false)
    @Required
    private Timestamp hora;	
//MP-MANAGED-UPDATABLE-ENDING


//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-FacturaCompra-orden_entrada@
    @ManyToOne (fetch=FetchType.LAZY ) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="factura_compra_identificador",  nullable=true,  unique=false  )
    @ReferenceView ("reference") 
    private FacturaCompra facturaCompraIdentificador; 
    
//MP-MANAGED-UPDATABLE-ENDING
//children
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador-orden_entrada@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleOrdenEntrada.class, fetch=FetchType.LAZY, mappedBy="ordenEntradaIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleOrdenEntrada> detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<DetalleOrdenEntrada>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador-orden_entrada@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel0Normal.class, fetch=FetchType.LAZY, mappedBy="ordenEntradaIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <EntraNivel0Normal> entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel0Normal>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador-orden_entrada@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel1Normal.class, fetch=FetchType.LAZY, mappedBy="ordenEntradaIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <EntraNivel1Normal> entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel1Normal>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador-orden_entrada@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel3Externo.class, fetch=FetchType.LAZY, mappedBy="ordenEntradaIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <EntraNivel3Externo> entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel3Externo>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador-orden_entrada@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.EntraNivel4Externo.class, fetch=FetchType.LAZY, mappedBy="ordenEntradaIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <EntraNivel4Externo> entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel4Externo>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//m2m
    /**
    * Default constructor
    */
    public OrdenEntrada() {
    }


    public Integer getIdentificador() {
        return identificador;
    }
	
    public void setIdentificador (Integer identificador) {
        this.identificador =  identificador;
    }
    

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-correlativo@
    public String getCorrelativo() {
        return correlativo;
    }
	
    public void setCorrelativo (String correlativo) {
        this.correlativo =  correlativo;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-hora@
    public Timestamp getHora() {
        return hora;
    }
	
    public void setHora (Timestamp hora) {
        this.hora =  hora;
    } 
//MP-MANAGED-UPDATABLE-ENDING


    public FacturaCompra getFacturaCompraIdentificador () {  //
    	return facturaCompraIdentificador;
    }
	
    public void setFacturaCompraIdentificador (FacturaCompra facturaCompraIdentificador) {
    	this.facturaCompraIdentificador = facturaCompraIdentificador;//this.facturaCompraIdentificador = facturaCompra;
    }

    public Set<DetalleOrdenEntrada> getDetalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador() {
        if (detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador == null){
            detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<DetalleOrdenEntrada>();
        }
        return detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador;
    }

    public void setDetalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador (Set<DetalleOrdenEntrada> detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador) {
        this.detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador = detalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador;
    }	
    
    public void addDetalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador (DetalleOrdenEntrada detalleOrdenEntrada) {
    	    getDetalleOrdenEntradaOrdenEntradaViaOrdenEntradaIdentificador().add(detalleOrdenEntrada);
    }
    
    public Set<EntraNivel0Normal> getEntraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador() {
        if (entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador == null){
            entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel0Normal>();
        }
        return entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador;
    }

    public void setEntraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador (Set<EntraNivel0Normal> entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador) {
        this.entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador = entraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador;
    }	
    
    public void addEntraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador (EntraNivel0Normal entraNivel0Normal) {
    	    getEntraNivel0NormalOrdenEntradaViaOrdenEntradaIdentificador().add(entraNivel0Normal);
    }
    
    public Set<EntraNivel1Normal> getEntraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador() {
        if (entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador == null){
            entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel1Normal>();
        }
        return entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador;
    }

    public void setEntraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador (Set<EntraNivel1Normal> entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador) {
        this.entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador = entraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador;
    }	
    
    public void addEntraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador (EntraNivel1Normal entraNivel1Normal) {
    	    getEntraNivel1NormalOrdenEntradaViaOrdenEntradaIdentificador().add(entraNivel1Normal);
    }
    
    public Set<EntraNivel3Externo> getEntraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador() {
        if (entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador == null){
            entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel3Externo>();
        }
        return entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador;
    }

    public void setEntraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador (Set<EntraNivel3Externo> entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador) {
        this.entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador = entraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador;
    }	
    
    public void addEntraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador (EntraNivel3Externo entraNivel3Externo) {
    	    getEntraNivel3ExternoOrdenEntradaViaOrdenEntradaIdentificador().add(entraNivel3Externo);
    }
    
    public Set<EntraNivel4Externo> getEntraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador() {
        if (entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador == null){
            entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador = new HashSet<EntraNivel4Externo>();
        }
        return entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador;
    }

    public void setEntraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador (Set<EntraNivel4Externo> entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador) {
        this.entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador = entraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador;
    }	
    
    public void addEntraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador (EntraNivel4Externo entraNivel4Externo) {
    	    getEntraNivel4ExternoOrdenEntradaViaOrdenEntradaIdentificador().add(entraNivel4Externo);
    }
    



//MP-MANAGED-ADDED-AREA-BEGINNING @implementation@
//MP-MANAGED-ADDED-AREA-ENDING @implementation@

}
